// Package config 包含应用程序的配置初始化逻辑。
// 本文件用于初始化 Redis 客户端，并将其存储到全局变量中以供其他模块使用。
package config

import (
	"exchangeapp/global" // 导入全局变量包，用于存储 Redis 客户端实例
	"log"                // 用于日志记录

	"github.com/go-redis/redis" // Redis 客户端库
)

// initRedis 初始化 Redis 客户端连接
func initRedis() {
	// 从全局配置中读取 Redis 的地址、数据库编号和密码
	addr := AppConfig.Redis.Addr
	db := AppConfig.Redis.DB
	password := AppConfig.Redis.Password

	// 创建 Redis 客户端实例
	RedisClient := redis.NewClient(&redis.Options{
		Addr:     addr,     // Redis 服务器地址
		DB:       db,       // 使用的 Redis 数据库编号
		Password: password, // Redis 连接密码
	})

	// 测试 Redis 连接是否成功
	_, err := RedisClient.Ping().Result()
	if err != nil {
		// 如果连接失败，记录错误日志并终止程序
		log.Fatalf("Failed to connect to Redis, got error: %v", err)
	}

	// 将 Redis 客户端实例存储到全局变量中
	global.RedisDB = RedisClient
}
